4์ฅ ๋ณ์
4.1 ๋ณ์๋ ๋ฌด์์ธ๊ฐ? ์ ํ์ํ๊ฐ?
๋ณ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ฐ๋ ์ด๋ค
10+20
์ด๋ผ๋ ์์ด ์์ ๋ ์ฌ๋์ ๋จธ๋ฆฌ์์์๋
- ์ซ์ 10๊ณผ 20์ ๋๋์ ๊ธฐ์ต(
์ ์ฅ
)ํ๋ค. ์ด๋๋ 10, + 20 ์ด๋ผ๋ ๊ธฐํธ์ ์๋ฏธ๋ฅผ ์๊ณ ์ดํดํ๋ค (๋ฆฌํฐ๋ด๊ณผ
์ฐ์ฐ์
) - ์ฐ์ฐํ๋ค
์ด๋ ํํ์์ ์๋ฏธ๋ฅผ ํด์
ํ์ฑ
ํ๋ค - ์ฐ์ฐํ ๊ฒฐ๊ณผ๋ฅผ ๋๋์ ๊ธฐ์ต(
์ ์ฅ
)ํ๋ค ์ด ์์๊ฐ ์ด๋ฃจ์ด์ง๋ค
์ฌ๋์ ์ ๊ณผ์ ์ ๋ชจ๋ ๋๋์์ ์ฒ๋ฆฌํ์ง๋ง, ์ปดํจํฐ๋ ๊ธฐ์ต, ์ฐ์ฐ ํ๋ ๊ณผ์ ์ด ๋ค๋ฅธ ๋ถํ์์ ์ด๋ฃจ์ด์ง๋ค
- 10๊ณผ 20์
๋ฉ๋ชจ๋ฆฌ
์์ ๊ธฐ์ตํ๋ค CPU
์์ ์ฐ์ฐํ๋ค- ์ฐ์ฐํ ๊ฒฐ๊ณผ๋ฅผ
๋ฉ๋ชจ๋ฆฌ
์์ ๊ธฐ์ตํ๋ค
๊ทธ๋ผ ๊ธฐ์ต์ ๋ด๋นํ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์ฐ์ ๋ด๋นํ๋ CPU์ ๋ํด ๋ ์์ธํ ์์๋ณด์
๋ฉ๋ชจ๋ฆฌ
๋ฉ๋ชจ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์ ์ ์งํฉ์ฒด์ด๋ค ๋ฉ๋ชจ๋ฆฌ ์ ํ๊ฐ์ ํฌ๊ธฐ๋ 1byte(8bit)์ด๋ค. ๋ฐ์ดํฐ๊ฐ 2์ง์ ํํ๋ก ์ด๊ณณ์ ์ ์ฅ๋๋ค
๋ฉ๋ชจ๋ฆฌ ์ ๋ง๋ค ๊ณ ์ ์ ์ฃผ์๊ฐ ์กด์ฌํ๋ค
์ปดํจํฐ๋ ์ด ๋ฉ๋ชจ๋ฆฌ ์ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ(write) ํ๊ฑฐ๋ ์ฝ๋๋ค(read)
๊ฐ์ ์ ์ฅํ๋ ์ญํ
10+20์ ์ฐ์ฐํ ๋, ์ฐ์ 10๊ณผ 20์ ๋ฉ๋ชจ๋ฆฌ ์ ์ ์ ์ฅ(write)ํ๋ค ๊ทธ๋ฆฌ๊ณ ์ฐ์ฐ์ ํ ๋ ๋ฉ๋ชจ๋ฆฌ ์ ์ ์ฝ์ด 10๊ณผ 20์ด๋ผ๋ ์ซ์๋ฅผ ์ป์ด ๋ธ๋ค
๊ฐ์ ์๋ณํ๊ธฐ ์ํ ์ญํ
์๊น ์ฐ๋ฆฌ๋ 10+20์ ๋ํด์ 30์ด๋ผ๋ ๊ฐ์ ์ป์๋ค. ์ด ๊ฐ์ ๋ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ ์ ์ ์ฅ๋๋ค
๊ทธ๋ฐ๋ฐ, ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๋ฉ๋ชจ๋ฆฌ ์ ์ ์ง์ ์ ๊ทผํ ์ ์๋ค ์๋ฐ์คํฌ๋ฆฝํธ ๋ฉ๋ชจ๋ฆฌ์ ๊ดํ ๋ด์ฉ์ ๋ธ๋ก๊ทธโ ์ฐธ๊ณ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ค๋ฅธ ์ธ์ด์๋ ๋ค๋ฅด๊ฒ, ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ํตํด ๊ฐ์ ์ง์ ์ ๊ทผํ ์ ์๋ค ์๋ํ๋ฉด ๊ฐ์ด ์ ์ฅ๋ ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ํฉ์ ๋ฐ๋ผ ์ด๋์ ์ ์ฅ๋๋์ง ์์๋ก ๊ฒฐ์ ๋๋ค
๊ทธ๋์, ๊ฐ์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ํญ์ ๋ณ์
๋ฅผ ์ด์ฉํด์ ๊ฐ์ ์ ๊ทผํด์ผ ํ๋ค
[!note] ์ ๋ฆฌ ๋ณ์๋ ํ๋์ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํด ํ๋ณดํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ, ๋๋ ๊ทธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์๋ณํ๊ธฐ ์ํด ๋ถ์ธ ์ด๋ฆ์ด๋ค
๋ธ๋ผ์ฐ์ ์์ ์ปดํจํฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ๋ฐ๋๋ค
์ ๋ฆฌ
let a = 10;
let b = 10;
a = 20;
[!note] ์ ์ด๋ ๊ฒ ๋ ๊น? ์ ๊ฐ์ด ๋ฐ๋๋ฉด ์๋ก์ด ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋๊ฑธ๊น? ์ซ์ ๋ฆฌํฐ๋ด??
์ฉ์ด๋ฅผ ๋ค์ ์ ๋ฆฌํ์๋ฉด ๋ณ์์ ๊ฐ์ ์ ์ฅํ๋ ๊ฒ์ ํ ๋น, ๋์ , ์ ์ฅ(assignment) ์ด๋ผ๊ณ ํ๊ณ ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ ์ฝ๋ ๊ฒ์ ์ฐธ์กฐ(reference) ๋ผ๊ณ ํ๋ค
๋ถ๋ณ์ฑ์ ๊ตฌํํ๊ธฐ ์ํด์
4.2 ์๋ณ์
์๋ณ์๋ ์ด๋ฆ์์๋ ์ ์ ์๋ฏ, ์ด๋ค ๊ฐ์ ๊ตฌ๋ณํ์ฌ ์๋ณํ ์ ์๋ ๊ณ ์ ํ ์ด๋ฆ์ด๋ค
ํ์ง๋ง, ์๋ณ์๋ ์ฌ์ค ๊ฐ์ ๊ตฌ๋ณํ์ง๋ ๋ชปํ๋ค
๋์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์
๋ฅผ ๊ตฌ๋ณํ๋ค
์๋ณ์๊ฐ ๊ธฐ์ตํ๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ฝ๊ณ , ๊ทธ ๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ๋ด๊ธด ๊ฐ์ ์ฝ๋ ๊ณผ์ ์ด ์ด๋ฃจ์ด์ง๋ ๊ฒ์ด๋ค
[!note] ์๋ณ์ ์๋ณ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ถ์ธ ์ด๋ฆ์ด๋ค
๋ฐ๋ผ์ ๋จ์ํ ๋ณ์ ๋ฟ๋ง ์๋๋ผ ํจ์, ํด๋์ค ๋ฑ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ ๋ชจ๋ ๊ฐ์ ์ ์ฅํ๋ ์ด๋ฆ์ ์๋ณ์๋ผ๊ณ ๋ถ๋ฅธ๋ค
4.3 ๋ณ์ ์ ์ธ
๋ณ์ ์ ์ธ์ด๋, ๋ณ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋ค๊ณ ์ ์ธํ์ฌ ๋ณ์๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋งํ๋ค ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ด ์ด๋ฃจ์ด์ง๋ค
- ๋ณ์ ์ด๋ฆ์ด ์ ์ธ๋๋ฉด, ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ํ๊ฐ๋ฅผ ๊ณจ๋ผ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ๋ณดํ๋ค
- ๊ทธ๋ฆฌ๊ณ ๊ฐ์ ์ ์ฅํ ์ ์๋ค
๋ณ์๋ฅผ ์ ์ธํ๊ธฐ ์ํด์๋ ํค์๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
ES6 ์ ์๋ var
ํค์๋ ๋ฐ์ ์์์ง๋ง, ์ดํ let
๊ณผ const
๊ฐ ๋ฑ์ฅํ๋ค
var
์ ๋จ์ ์ด ๋ง๊ธฐ ๋๋ฌธ์ let
๊ณผ const
๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๊ถ์ฅํ๋ค
์์ง let
๊ณผ const
์ ๋ํด ๋ฐฐ์ฐ์ง ์์์ผ๋ฏ๋ก, ์ฐ์ ์ var
์ ์ด์ฉํด ๋ณ์ ์ ์ธ์ ๋ํด ์์๋ณด์
var ์ ์ธ์ ์ผ์ด๋๋ ๊ณผ์
-
๋ณ์๋ฅผ ์ ์ธ๋๋ค
var score;
์ด๋ ๊ฒ ์ ์ธ์ ํ๋ฉด, ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ๋ณดํ ์ ์๋ค -
์ด๊ธฐ๊ฐ์ด ์ค์ ๋๋ค
var score=0;
์ฒ๋ผ ์ฌ์ฉ์๊ฐ ์ด๊ธฐํ ํด์ฃผ์ง ์์ ๊ฒฝ์ฐ์๋ ๊ฐ์ดundefined
๋ก ์๋ ์ด๊ธฐํ ๋๋ค
undefined๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ ๊ณตํ๋ ์์ ํ์ ์ ๊ฐ์ด๋ค ์์ธํ ๋ด์ฉ์ 6์ฅ์ [[๋ฐ์ดํฐ ํ์ ]] ์์ ์์ธํ ์์๋ณผ ์ ์๋ค
let๊ณผ const์ ์ด๊ธฐ๊ฐ
[!warning] ์ฐธ๊ณ let์ ์๋์ผ๋ก ์ด๊ธฐํ ๋์ง ์๋๋ค. ๋ฐ๋ผ์ ์ด๊ธฐ๊ฐ์ด undefined๊ฐ ์๋๋ค const๋ ์๋์ผ๋ก ์ด๊ธฐํ ๋์ง ์๋๋ค. const๋ ์ด๊ธฐ๊ฐ์ ์ค์ ํด์ฃผ์ง ์์ผ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค
4.4 ๋ณ์ ์ ์ธ์ ์คํ ์์ ๊ณผ ๋ณ์ ํธ์ด์คํ
ํธ์คํ ? ํธ์ด์คํ ?
ํธ์คํ (Hosting)๊ณผ ํธ์ด์คํ (Hoisting)์ ์ด๋ฆ๋ง ๋น์ทํ ์์ ๋ค๋ฅธ ๊ฐ๋ ์ด๋ค- ์ธ๋์ ์ธ๋๋ค์์ ์ ๋ ์ฐจ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค
ํธ์คํ ์ ์น ์๋น์ค๋ ์๋ฒ ํธ์คํ ์ ํ ๋ ์ฐ๋ ์ฉ์ด์ด๋ค
ํํ์ด์ง๋ฅผ ๋ง๋ค์ด์ AWS์๋ฒ์ ์ฌ๋ฆฌ๋ฉด, ์๋ฒ์ ํ๋ก์ ํธ๊ฐ โํธ์คํ โ ๋์๋ค ๋ผ๊ณ ํ๋ค
๋ฐ๋ฉด ํธ์ด์คํ ์ ์๋ฐ์คํฌ๋ฆฝํธ์ โํน์งโ์ ์ง์นญํ๋ ์ฉ์ด๋ค.
Javascript๋ ์ธํฐํ๋ฆฌํฐ ์ธ์ด์๊ณผ ๋์์ ์ปดํ์ผ ์ธ์ด๋ค. ๊ทธ๋์ ์ด๋ฌํ ํน์ง์ด ์กด์ฌํ๋ค.
ํธ์ด์คํ (Hoisting)์ ๊ฐ๋
ํธ์ด์คํ (Hoisting)์ JavaScript์์ ๋ณ์์ ํจ์ ์ ์ธ์ด ์ค์ฝํ์ ์๋จ์ผ๋ก ๋์ด์ฌ๋ ค์ง๋ ํน์ง์ด๋ค
์ฝ๋ ์คํ ์ ์ JavaScript ์์ง์ ์ํด ์ฒ๋ฆฌ๋๋ค
์์ง ์ ์ ๋ฟ์ง ์์ผ๋ ์ฝ๋ ์์๋ฅผ ๋ณด๋ฉด์ ์ดํดํด๋ณด์.
ํธ์ด์คํ ์ ์ข ๋ฅ์๋ ๋ณ์ ํธ์ด์คํ ๊ณผ ํจ์ ํธ์ด์คํ ์ด ์๋ค.
๋ณ์ ํธ์ด์คํ
๋ณ์ ์ ์ธ์ ํ๋ฉด ์ฝ๋์ ๋งจ ์๋ก ๋์ด์ฌ๋ ค์ง๋ค
[!question] ํธ์ด์คํ ์ ์ด์ ์ด ๋ฌด์์ธ๊ฐ์? ์ด๋์๋ ํธ๋ฆฌํ๊ฒ ๋ณ์๋ฅผ ์ ์ธํด๋ ๋๋ค
๋จ, ์ด๊ธฐํ(๊ฐ ํ ๋น)๋ ๋์ด์ฌ๋ ค์ง์ง ์๋๋ค. ์ฆ ๋จ์ํ ์ ์ธ๋ง ํด์ค๋ค. var
๋ก ์ ์ธ๋ ํค์๋์ ๊ฒฝ์ฐ, ์ด๋ undefined๋ก ์ด๊ธฐํ ๋๋ค
console.log(x); // x๊ฐ ์ ์ธ๋ ์ํ๋ผ undefined๊ฐ ์ถ๋ ฅ๋๋ค
var x = 100;
console.log(x); //100์ด ์ถ๋ ฅ๋๋ค
์์ ์ฝ๋๋ ์๋์ ๊ฐ์ด JS์์ง์ ์ํด ์ฒ๋ฆฌ๋๋ค
var x; //๋ณ์ ํธ์ด์คํ
, ์๋ก ๋์ด์ฌ๋ ค์ง
console.log(x); // undefined
var x = 100;
console.log(x); // 100
var
๋ก ์ ์ธ๋ ๋ณ์๋ ํธ์ด์คํ
์ด ๋ฐ์ํ๋ฉฐ, ์ ์ธ๋ถ๊ฐ ๋์ด์ฌ๋ ค์ง์ง๋ง ๊ฐ์ ๋ฃ์ด์ค ๋ถ๋ถ(์ด๊ธฐํ ๋ ๋ถ๋ถ)์ ๋์ด์ฌ๋ ค์ง์ง ์์ undefined
๋ก ์ถ๋ ฅ๋๋ค
์ด๋ฅผ ์ฝ๊ฒ ์ค๋ช ํด๋ณด๋ฉด, ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ฝ๋๋ฅผ ์ญ ๋ณด๋ฉด์ ๋ชจ๋ ๋ณ์๋ค์ ๋ํ ์ฌ์ ์ ๋ง๋ ๋ค
์๋ฅผ ๋ค์ด
console.log(x + y + z); // undefined
var x = 1;
var y = 10;
var z = 100;
console.log(x + y + z); //111
๋ผ๋ ์ฝ๋๊ฐ ์์๋, ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋ณ์ x,y,z๋ฅผ ๋ฐ๊ฒฌํ๊ณ ์ปดํ์ผ ์ ์ ๋ณ์ ์ฌ์ ์ ๋ง๋ ๋ค. ์ด๋, ๊ฐ์ ๋ฃ์ง ์๊ณ ๋น์๋๋ค(undifined)
type | ๋ณ์๋ช | ๊ฐ |
---|---|---|
var | x | undefined |
var | y | undefined |
var | z | undefined |
๊ทธ๋ฆฌ๊ณ ์ฝ๋๋ฅผ ํ๋ ํ๋ ์คํ์ํค๋ฉด์ ๋ณ์ ๊ฐ์ ๋ง์ฃผ์น ๊ฒฝ์ฐ ( var x=1) ์ด ์ฌ์ ์ ๊ฐ์ ์์ ํด์ค๋ค.
ํจ์ ํธ์ด์คํ
ํจ์ ์ ์ธ์ ํจ์ ์ ์ฒด๊ฐ ๋์ด์ฌ๋ ค์ง๋ค. ๋ณ์ ํธ์ด์คํ ๊ณผ ๋์ผํ๋ค
helloWorld(); // "Hello, World!"
function helloWorld() {
console.log("Hello, World!");
}
์์ ์ฝ๋๋ ์๋์ ๊ฐ์ด ํด์๋๋ค
//ํจ์ ํธ์ด์คํ
(๋งจ ์๋ก ์ฌ๋ผ์ด)
function helloWorld() {
console.log("Hello, World!");
}
helloWorld(); // "Hello, World!"
ํจ์ ํํ์์ ๊ฒฝ์ฐ ํธ์ด์คํ ์ด ๋ฐ์ํ์ง ์๋๋ค.ํจ์ ํํ์์ ๋ณ์ ํธ์ด์คํ ์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋ณ์๋ ํธ์ด์คํ ๋์ง๋ง ํจ์๋ ๊ทธ๋ ์ง ์๋ค.
์ฃผ์ํด์ผ ํ ์ ์, ํธ์ด์คํ ์ ์ ์ธ๋ถ๋ง ๋์ด์ฌ๋ ค์ง๋ฉฐ ํ ๋น(์ด๊ธฐํ) ๋ถ๋ถ์ ์๋ ์์น์์ ์คํ๋๋ค.
๋ฐ๋ผ์ ๋ณ์ ์ด๊ธฐํ ์ ์ ๋ณ์๋ฅผ ์ฐธ์กฐํ๋ฉด undefined
๊ฐ ๋ฐํ๋ ์ ์๋ค.
ํจ์์ ๊ฒฝ์ฐ๋ ํจ์ ์ ์ฒด๊ฐ ๋์ด์ฌ๋ ค์ง๋ฏ๋ก ์ ์ธ ์ด์ ์ ํธ์ถํด๋ ์ ์์ ์ผ๋ก ์๋ํ๋ค
์ง๋ฌธ: var / let,const ํธ์ด์คํ ์ ์ฐจ์ด
let๊ณผ const๋ ๋ธ๋ก ์ค์ฝํ๋ฅผ ๊ฐ์ง๋ฉฐ, ๋ธ๋ก ๋ด์์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋ค
var
: ๋ณ์ ์ ์ธ์ด ๋์ด์ฌ๋ ค์ ธ์, ์ ์ธ ์ ์ ๋ณ์์ ์ ๊ทผํ๋ฉดundefined
๊ฐ ๋์จ๋ค
console.log(a); // undefined
var a = 10;
console.log(a); // 10
let
๊ณผ const
: ๋ณ์ ์ ์ธ์ด ๋์ด์ฌ๋ ค์ง์ง๋ง, ์ ์ธ ์ ์๋ ์ ๊ทผํ ์ ์๋ค.
์ ์ธ ์ ์ ์ ๊ทผ์ ์๋ํ๋ฉด ์ค๋ฅ๊ฐ ๋๋ค
console.log(b); // ReferenceError: b is not defined
let b = 20;
console.log(c); // ReferenceError: c is not defined
const c = 30;
์๋ํ๋ฉด let
๊ณผ const
๋ ์ ์ธ์ด ํธ์ด์คํ
๋์ง๋ง ์ด๊ธฐํ๋ ํธ์ด์คํ
๋์ง ์๋๋ค.
TDZ
์ด๋ ๊ฒ ๋ณ์๊ฐ ์ ์ธ๋ ๋๊ณ ๋์๋ถํฐ ์ด๊ธฐํ๋๊ธฐ ์ ๊น์ง์ ๊ตฌ๊ฐ์ ์ผ์์ ์ฌ๊ฐ์ง๋(TDZ)๋ผ๊ณ ํ๋ค Temporal Dead Zone
type | ๋ณ์๋ช | ๊ฐ |
---|---|---|
let | a | (๋น์ด์์) |
let | b | (๋น์ด์์) |
const | c | (๋น์ด์์) |
4.5 ๊ฐ์ ํ ๋น
๋ณ์์ ๊ฐ์ ์ ์ฅํ๋ ๊ฒ์ ํ ๋น ์ด๋ผ๊ณ ํ ๋ค๋ ๊ฒ์ ์์์ ์ธ๊ธํ๋ค ์ด๋, ํ ๋น ์ฐ์ฐ์ =์ ์ฌ์ฉํ๋ค ์ค๋ฅธ์ชฝ์ ์๋ ๊ฐ์ ์ผ์ชฝ์ผ๋ก ํ ๋นํ๋ค
var score = 80;
๋ํ ์์์ ํธ์ด์คํ ์ ๋ํด ์์๋ณผ๋ ์ธ๊ธํ๋ฏ์ด, ๋ณ์ ์ ์ธ์ด ํธ์ด์คํ ๋จ๊ณ์์ ๋จผ์ ์ด๋ฃจ์ด์ง๊ณ , ๊ฐ์ ํ ๋น์ ๋์ค์ ์ด๋ฃจ์ด์ง๋ค
[!note] ๋ณ์์ ์ ์ธ๊ณผ ๊ฐ์ ํ ๋น ๋ณ์ ์ ์ธ๊ณผ ๊ฐ์ ํ ๋น์ 2๊ฐ์ ๋ฌธ์ผ๋ก ๋๋์ด์ ธ ๊ฐ๊ฐ ์คํ๋๋ฉฐ ์คํ ์์ ๋ ์๋ก ๋ค๋ฅด๋ค. ๋ณ์ ์ ์ธ์ด ๋จผ์ ์ด๋ฃจ์ด์ง๋ค(์ด๋ ์ด๊ธฐ ํ ๋น๊ฐ์ undefined)
4.6 ๊ฐ์ ์ฌํ ๋น
[!note] >
let
var
๋ก ์ ์ธ๋ ๋ณ์๋ ๊ฐ์ ์ฌํ ๋น์ด ๊ฐ๋ฅํ๋คconst
๋ ์ฌํ ๋น์ด ๋ถ๊ฐํ๋ฉฐ, ์ ์ธ์ ์ด๊ธฐ๊ฐ์ ์ ์ด ๊ทธ ๊ฐ์ผ๋ก ์ด๊ธฐํ ํด์ฃผ์ด์ผ ํ๋ค
์๋ฐํ ๋งํ๋ฉด, ํธ์ด์คํ ์ ์ํด ๋ณ์๊ฐ ์ฒ์ ์ ์ธ๋ ๋ undefined๋ก ์ ์ธ๋๊ธฐ์, ์ผ๋ฐ์ ์ธ ๊ฐ ํ ๋น๋ ์ฌ์ค์ ์ฌํ ๋น์ด๋ค ์ด ๋ ผ๋ฆฌ๋ฅผ ์ ์ฉํด๋, โ๏ธnote ์์ ์ ์ ์ด๋ก ์ด ๋๊ฐ์ด ์ ์ฉ๋๋ ๊ฒ์ ์ ์ ์๋ค
ํ ๋น๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก, ์ฌํ ๋น์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๋ฐ๋๋ค๋ ๊ฒ์ ์ ์ ์๋ค undefined, 80 ์ฒ๋ผ ์ฌ์ฉ๋์ง ์๋ ๊ฐ์ ==๊ฐ๋น์ง ์ฝ๋ ํฐ์ ์ํด ๋ฉ๋ชจ๋ฆฌ์์ ์๋ํด์ ๋๋ค== ๋จ! ๋ฉ๋ชจ๋ฆฌ์์ ์ธ์ ํด์ ๋๋์ง๋ ๋ชจ๋ฅธ๋ค
js๊ฐ๋ฐ์๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ด์ฉํด ๊ฐ์ ์ ๊ทผํ๋ฉด ์ ๋๋ค๋ ๊ฒ์ ๋ค์ ํ๋ฒ ๊ธฐ์ตํ๊ณ ๋์ด๊ฐ์
[!note] unmanaged lang VS managed lang
unmanaged language
C์ ๊ฐ์ด ๊ฐ๋ฐ์๊ฐ ๋ช ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น, ํด์ ํ ์ ์๋ ์ธ์ด๋ฅผ unmanaged language ๋ผ๊ณ ํ๋ค
managed language
์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ด ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ฉ๋ชจ๋ฆฌ ์ ์ด๋ฅผ ํ ์ ์๊ณ , ๊ฐ๋น์ง ์ฝ๋ ํฐ๊ฐ ์๋์ผ๋ก ์ ์ดํด์ฃผ๋ ๊ฒ์ managed language ๋ผ๊ณ ํ๋ค
![[Screenshot 2024-07-17 at 5.15.19 PM 1.png]] ![[Screenshot 2024-07-17 at 6.55.26 PM.png]]
๊ฐ๋น์ง ์ปฌ๋ ํฐ
๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ ๋ค์๊ณผ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์๋ํ๋ค
- ์ฐธ์กฐ ์นด์ดํ (Reference Counting): ๊ฐ์ฒด๊ฐ ์ฐธ์กฐ๋๋ ํ์๋ฅผ ์ถ์ ํ๊ณ , ์ฐธ์กฐ ํ์๊ฐ 0์ด ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํฉ๋๋ค.
- ๋งํฌ ์ค ์ค์(Mark-and-Sweep): ๋ฃจํธ ๊ฐ์ฒด์์ ์์ํ์ฌ ๋๋ฌ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ๋งํฌํ๊ณ , ๋งํฌ๋์ง ์์ ๊ฐ์ฒด๋ ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ฑฐํฉ๋๋ค.
4.7 ์๋ณ์ ๋ค์ด๋ฐ ๊ท์น
์๋ณ์ ๊ท์น
์์ ์ค๋ช ํ๋ฏ์ด, ์๋ณ์๋, ์ด๋ค ๊ฐ์ ๊ตฌ๋ถํ์ฌ ์๋ณ ํ ์ ์๋ ์ด๋ฆ์ ์๋ฏธํ๋ค ์๋ณ์ ์ด๋ฆ์ ์ง์๋, ๊ท์น์ด ์กด์ฌํ๋ค
- ๋ฌธ์, ์ซ์, ์ธ๋์ค์ฝ์ด(
_
), ๋ฌ๋ฌ๊ธฐํธ$
๋ก๋ง ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค - ๋จ, ์ซ์๋ก ์์ํ ์๋ ์๋ค
- ์์ฝ์ด๋ ์๋ณ์๋ก ์ฌ์ฉํ ์ ์๋ค
์์ฝ์ด
์์ด ์ด์ธ์ ๋ค๋ฅธ ์ธ์ด๋ก ์ด๋ฃจ์ด์ง ์๋ณ์: ํ๊ธ ์๋ณ์
ES5๋ถํฐ ์๋ณ์๋ฅผ ๋ง๋ค ๋ ์ ๋์ฝ๋ ๋ฌธ์๋ฅผ ํ์ฉํ๊ธฐ ๋๋ฌธ์ ํ๊ธ, ์ผ๋ณธ์ด ์๋ณ์๋ ์ฌ์ฉํ ์ ์๋ค ์ฑ ์์๋ ํ๊ธ ์๋ณ์๋ฅผ ๋น์ถ์ฒ ํ๋ค
ํํธ ํ ์ค์์๋ ํ๊ธ๋ก ์ง๋ ๋ณ์๋ฅผ ์ง๋ ์ธ์ข ๋์ ํ๋ก์ ํธ๋ฅผ ์งํํ ์ ์ด ์๋ค ๊ด๋ จ ๊ฒ์๋ฌผ: ์ธ์ข ๋์ ํ๋ก์ ํธโ
(์์ง๊น์ง ์ฌ์ฉํ๋์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค)
๋ค์ด๋ฐ ์ปจ๋ฒค์
๋ํ์ ์ผ๋ก 4๊ฐ์ง ์ ํ์ ๋ค์ด๋ฐ ์ปจ๋ฒค์ ์ด ์๋ค
์นด๋ฉ ์ผ์ด์ค
let devoceanYoung;
์๋ฌธ์๋๋ฌธ์
์ค๋ค์ดํฌ ์ผ์ด์ค
let devocean_young;
์๋ฌธ์_์๋ฌธ์
ํ์ค์นผ ์ผ์ด์ค
let DevoceanYoung;
๋๋ฌธ์๋๋ฌธ์
ํ๊ฐ๋ฆฌ์ธ ์ผ์ด์ค
let strDevoceanYoung;
ํ์
๋๋ฌธ์๋๋ฌธ์
์ผ๋ฐ์ ์ผ๋ก ๋ณ์๋ ํจ์์ ์ด๋ฆ์ ์นด๋ฉ ์ผ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ ์์ฑ์ ํจ์, ํด๋์ค ์ด๋ฆ์ ํ์ค์นผ ์ผ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค